벡엔드 개발자 면접 질문(기술면접) 질문 정리 모음 - node

JIGGLYPOP

염동환


새로운 개발을 좋아하는 개발자

2021-04-20 01:00 시에 저장한 글입니다.

백엔드 면접 질문용 공부 후 정리 자료입니다. 정확하지 않을 수 있으니 꼭 다시 책이나 자료를 참고하여 공부하세요


worker_thread 모듈

  • Node.js는 이벤트 루프가 싱글 스레드에서 동작하지만 내부적으로 스레드풀을 두어 I/O 작업에 스레드를 사용할 수 있도록 하고 이를 통해 병렬적으로 작업
const http = require("http");
const requestHandler = (req, res) => {
  console.log(req.url);
  res.end("node.js");
};

const server = http.createServer(requestHandler);
server.listen(3000, (err) => {
  if (err) {
    return console.log("error");
  }
  console.log("http://localhost:3000");
});
  • node.js가 사용하는 libuv의 모듈은 내부적으로 thread pool을 두어 I/O 작업을 thead pool에 존재하는 thread를 사용해 처리하기 때문에 event loop는 Block 당하지 않고 빠르게 작업을 계속 진행할 수 있음
  • Node.js는 싱글 스레드다 라는 말은 거짓
  • 하지만 일반적인 javascript 코드들은 싱글 스레드인 이벤트 루프에서 작업
  • CPU 작업량이 많은 코드는 다른 자바스크립트 코드를 Block하게 만들어 다른 작업이 중단된 것처럼 보일 수 있음
  • Node.js 버전 10.5부터 thread pool에 worker_thread라는 모듈을 통해 스레드를 생성
  • node를 실행시킬 때 다음 플래그
(node index.js) --experimental-worker